package main

import (
	"bufio"
	"fmt"
	"net"
	"os"
)

func echo(conn net.Conn) {
	for {
		var buf [1024]byte
		n, err := conn.Read(buf[:])
		if err != nil {
			fmt.Println("读取数据出错: ", err)
		}
		fmt.Printf("%v 说: %v", conn.RemoteAddr().String(), string(buf[:n]))

		var str string
		reader := bufio.NewReader(os.Stdin)
		str, err = reader.ReadString('\n')
		if err != nil {
			fmt.Println("发送失败: ", err)
			os.Exit(-1)
		}
		conn.Write([]byte(str))
	}
}
func main() {
	listener, err := net.Listen("tcp", "127.0.0.1:8000")
	if err != nil {
		fmt.Println("监听失败: ", err)
	}
	for {
		conn, err := listener.Accept()
		defer conn.Close()
		if err != nil {
			fmt.Println("接收请求失败: ", err)
		}
		go echo(conn)
	}
}
